import _config from './config'; // 导入私有配置
import GlobalConfig from '../../config/index.js'
import cookie from 'js-cookie'
import {
	userLogin
} from '../common.js'

export default function $http (options) {
	console.log (_config.url, options.url)
	if (options.url.indexOf ('http') == -1) {
		options.url = _config.url + options.url;
	}
	//const juyou_ticket_key = cookie.get('juyou-ticket');
	// options.header = Object.assign({}, options.header, {
	// 	// 'juyou-ticket': juyou_ticket_key,
	// 	// 'wx-id': GlobalConfig.wxId
	// 	'connection': 'keep-alive'
	// })

	return new Promise ((resolve, reject) => {
		// 进行url字符串拼接
		// 拦截请求
		_config.complete = (response) => {
			//  request請求访问成功
			if (response.statusCode === 200) {
				if (response.data.errcode === 1001) {
					// window.navigator.userAgent属性包含了浏览器类型、版本、操作系统类型、浏览器引擎类型等信息，这个属性可以用来判断浏览器类型
					let ua = window.navigator.userAgent.toLowerCase()
					// alert(JSON.stringify(ua))
					// 通过正则表达式匹配ua中是否含有MicroMessenger字符串
					if (ua.match(/MicroMessenger/i) == 'micromessenger') {
						if (this.$xeUtils.locat().host !== 'shengst.tripln.top' && this.$xeUtils.locat().host !== 'wanglanglang.tripln.top') {
						    mLogin().then(ret => {})
						}else{
							//是公众号
							let self_url = encodeURIComponent(window.location.href.replace(/#/g, '$'))
							location.href = _config.url+'/api/uc/ctcyq/wechatService/authorize?testip=false&type=api&returnUrl=' + self_url
						}
					} else {
						let obj = window.location.href;
						var index = obj.indexOf('=');//获取“=”首次出现的位置
						var categoryId = obj.substring( index + 1 );
						//不是公众号
						uni.navigateTo({
							url: '/pages/public/login?categoryId='+categoryId
						})
					}
				} else {
					resolve (response);
				}

			} else {
				// 处理catch 请求，不在本页面之外处理，统一在这里处理
				if (options.handle) {
					reject (response)
				} else {
					try {
						Promise.reject (response).catch (err => {
							// console.error(err);
							_page_error (response.statusCode || response.errMsg);
						});
					} catch (e) {
						console.log (e)
					}
				}
			}

		}
		// 开始请求
		uni.request (Object.assign ({withCredentials:true}, _config, options));
	})
}

// 接口錯誤
function _error (err, msg = '') {
	switch (err) {
		case 400:
			console.error (msg)
			// 错误码400的处理方式
			break;
	}
}

// request 錯誤
function _page_error (err) {
	switch (err) {
		case 401:
			// 错误码404的处理方式
			console.error ("请求背拒绝")
			break;
		case 404:
			// 错误码404的处理方式
			console.error ("没有找到页面")
			break;
		case 405:
			console.error ("错误的请求")
			break;
	}
}
